package com.ruoyi.erp.service;

import com.ruoyi.erp.domain.XzgOrderProduct;
import com.ruoyi.erp.domain.XzgProduct;
import com.ruoyi.erp.domain.dto.XzgOrderProductDto;
import com.ruoyi.erp.domain.dto.XzgOrderProductExcelDto;
import com.ruoyi.erp.domain.vo.XzgOrderProductVo;

import java.util.List;
import java.util.Map;

/**
 * @author qiuwencong
 * @Date 2022/1/5 8:43
 * @Package com.ruoyi.erp.service
 * @Description
 */
public interface IXzgOrderProductService {

    /**
     * 添加订单产品
     *
     * @param product
     * @return
     */
    int insertOrderProduct(XzgOrderProduct product);

    /**
     * cha
     *
     * @param orderId
     * @param productId
     * @return
     */
    Boolean checkProduct(Long orderId, Long productId);

    /**
     * 分页查询
     *
     * @param dto
     * @return
     */
    List<XzgOrderProductVo> selectOrderProductList(XzgOrderProductDto dto);

    /**
     * 根据id获取订单产品
     *
     * @param orderProductId
     * @return
     */
    XzgOrderProductVo selectOrderProductById(Long orderProductId);

    /**
     * 根据id修改修改订单产品
     *
     * @param product
     * @return
     */
    int updateOrderProduct(XzgOrderProduct product);

    /**
     * 根据id逻辑删除数据
     *
     * @param orderProductIds
     * @param username
     * @return
     */
    int deleteOrderProductById(Long[] orderProductIds, String username);

    /**
     * 检查库存
     *
     * @param productId
     * @param actualNum
     * @param username
     * @return
     */
    int reduceStorage(Long productId, Integer actualNum, String username);

    /**
     * 导入
     *
     * @param orderProducts
     * @param updateSupport
     * @param orderId
     * @param username
     * @return
     */
    Map<String, List<String>> importOrderProducts(List<XzgOrderProductExcelDto> orderProducts, boolean updateSupport, Long orderId, String username);
}
